package com.sisbibvir.unmsm.controller;

import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;

import org.primefaces.model.DefaultStreamedContent;
import org.primefaces.model.StreamedContent;

import com.sisbibvir.unmsm.dao.AlumnoTesiDAO;
import com.sisbibvir.unmsm.dao.DetalleTagsTesisDAO;
import com.sisbibvir.unmsm.dao.JPAUtil;
import com.sisbibvir.unmsm.dao.Profesor_has_tag_tesisDAO;
import com.sisbibvir.unmsm.entidades.Alumnotesi;
import com.sisbibvir.unmsm.entidades.DetalleTagsTesi;
import com.sisbibvir.unmsm.entidades.Profesor;
import com.sisbibvir.unmsm.entidades.ProfesorHasTagsAsesor;
import com.sisbibvir.unmsm.entidades.Tesi;

//import javax.servlet.ServletContext; 

@ManagedBean (name="BusquedaTesis")
@SessionScoped
public class BusquedaTesisController {

	JPAUtil util =  new JPAUtil();
	DetalleTagsTesisDAO dttd= new DetalleTagsTesisDAO(util.getEntityManager()); 
	Profesor_has_tag_tesisDAO ptdao = new Profesor_has_tag_tesisDAO(util.getEntityManager());
	AlumnoTesiDAO atdao= new AlumnoTesiDAO(util.getEntityManager());
	private List<Tesi> listatesis;
	private List<Profesor> listaasesores;
	private Tesi selectedTesis;
	private String entrada;
	private String autor1;
	private String autor2;
	private int valor;
	private boolean mtesis;
	private boolean mprofe;
	private boolean dos;
	private StreamedContent filedownload;
	
	
	public BusquedaTesisController() {
		listatesis=new ArrayList<Tesi>();
		listaasesores = new ArrayList<Profesor>();
	}
	
	public void Buscar(){
		if(valor==1){
			BuscarAsesores();
			System.out.println(valor);
		}
		if(valor==2){
			BuscarTesis();
		}
	}
	
	public void BuscarTesis(){
		
		cambiar();
		int tam=dttd.listarTodos().size();	
		List<DetalleTagsTesi> aux = dttd.listarTodos();
		System.out.println(tam);

		if(!listatesis.isEmpty())
			listatesis.clear();
		
		for(int i=0;i<tam;i++){
			if(aux.get(i).getTagsTesi().getDescripcion().equalsIgnoreCase(entrada)){
			Tesi x=new Tesi();
			 x.setId(aux.get(i).getTesi().getId());
			 x.setTitulo(aux.get(i).getTesi().getTitulo());
			 x.setResumen(aux.get(i).getTesi().getResumen());
			 x.setTipo(aux.get(i).getTesi().getTipo());
			 x.setArchivo(aux.get(i).getTesi().getArchivo());
			 x.setEstado(aux.get(i).getTesi().getEstado());
			 listatesis.add(x);
			}
		}
	}
	
	public void BuscarAsesores(){
		cambiar();
		int tam= ptdao.listarTodos().size();
		List<ProfesorHasTagsAsesor> aux= ptdao.listarTodos();
		if(!listaasesores.isEmpty())
			listaasesores.clear();
		
		for(int i=0;i<tam;i++){
			if(aux.get(i).getTagsAsesor().getDescripcion().equalsIgnoreCase(entrada)){
			Profesor x=new Profesor();
			x.setNombre(aux.get(i).getProfesor().getNombre());
			x.setApellidoM(aux.get(i).getProfesor().getApellidoM());
			x.setApellidoP(aux.get(i).getProfesor().getApellidoP());
			x.setCorreo(aux.get(i).getProfesor().getCorreo());
			x.setTelefono(aux.get(i).getProfesor().getTelefono());
			x.setDireccion(aux.get(i).getProfesor().getDireccion());
			x.setDni(aux.get(i).getProfesor().getDni());
			 listaasesores.add(x);
			}
		}
	}

	public void BuscarAutor(){
		int tam= atdao.listarTodos().size();
		autor1=" ";
		autor2=" ";
		List<Alumnotesi> aux =  atdao.listarTodos();
		System.out.println(getSelectedTesis().getId());
		for(int i=0;i<tam; i ++){
			if(aux.get(i).getTesi().getId()==getSelectedTesis().getId()){
				if(autor1.equals(" ")){
					autor1=aux.get(i).getAlumno().getNombre()+" "+aux.get(i).getAlumno().getApellido();
					dos=false;
				}
				else{
					autor2=aux.get(i).getAlumno().getNombre()+" "+aux.get(i).getAlumno().getApellido();
					dos=true;
				}
			}
		}	
		System.out.println(autor1+"  "+autor2);
	}
	
	
//	public void Descargar(){	
//		InputStream archivo = ((ServletContext) FacesContext.getCurrentInstance().getExternalContext().getContext()).getResourceAsStream("C:\\tesis\\"+getSelectedTesis().getTitulo()+".pdf");  
//		filedownload = new DefaultStreamedContent(archivo, "application/pdf",
//				getSelectedTesis().getTitulo() + ".pdf");
//		System.out.println(filedownload.getContentType());
//	}

	
	public void cambiar(){
		System.out.println(valor);
		if(valor==1){
			setMprofe(true);
			setMtesis(false);
			System.out.println(valor);
		}
		if(valor==2){
			setMprofe(false);
			setMtesis(true);
		}
	}
	
	public List<Tesi> getListatesis() {
		return listatesis;
	}

	public void setListatesis(List<Tesi> lista) {
		this.listatesis = lista;
	}

	public String getEntrada() {
		return entrada;
	}

	public void setEntrada(String entrada) {
		this.entrada = entrada;
	}

	public boolean isMtesis() {
		return mtesis;
	}

	public void setMtesis(boolean mtesis) {
		this.mtesis = mtesis;
	}

	public Tesi getSelectedTesis() {
		return selectedTesis;
	}

	public void setSelectedTesis(Tesi selectedTesis) {
		this.selectedTesis = selectedTesis;
	}

	public boolean isMprofe() {
		return mprofe;
	}

	public void setMprofe(boolean mprofe) {
		this.mprofe = mprofe;
	}

	public int getValor() {
		return valor;
	}

	public void setValor(int valor) {
		this.valor = valor;
	}

	public List<Profesor> getListaasesores() {
		return listaasesores;
	}

	public void setListaasesores(List<Profesor> listaasesores) {
		this.listaasesores = listaasesores;
	}

	public String getAutor1() {
		return autor1;
	}

	public void setAutor1(String autor1) {
		this.autor1 = autor1;
	}

	public String getAutor2() {
		return autor2;
	}

	public void setAutor2(String autor2) {
		this.autor2 = autor2;
	}

	public boolean isDos() {
		return dos;
	}

	public void setDos(boolean dos) {
		this.dos = dos;
	}

	public StreamedContent getFiledownload() {
		return filedownload;
	}

	public void setFiledownload(StreamedContent filedownload) {
		this.filedownload = filedownload;
	}
	
}

